<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // // splice 增删改都可以用的 返回值是删除的元素,原数组会改变
    // let food = ['西兰花', '花菜', '西瓜', '香蕉', '牛肉', '猪肉']
    // // 从第一项开始,删除一项
    // console.log(food.splice(1, 1)); //["花菜"]
    // console.log(food); // ["西兰花", "西瓜", "香蕉", "牛肉", "猪肉"]
    // // 如果第二个参数不写,那就是直接从坐标开始,全部删除
    // let food1 = food.splice(2)
    // console.log(food1); // ["香蕉", "牛肉", "猪肉"]
    // console.log(food); // ["西兰花", "西瓜"]
    //**********************************************************************

    // slice方法会返回一个新的数组,这个方法包括左边但是不包括右边,会截取数组中的一部分
    // 所以如果第二个参数不写的话,会直接截取从开始直到最后的数据
    // 因为是截取,如果直接从零开始截取,则会把整个的数组全部的复制一遍

    // let good = ['西兰花', '花菜', '西瓜', '香蕉', '牛肉', '猪肉']
    // console.log(good.slice(1, 3)) // ["花菜", "西瓜"]
    // console.log(good.slice(0)) // ["西兰花", "花菜", "西瓜", "香蕉", "牛肉", "猪肉"]

    // let foods = ['西瓜', '南瓜', '北瓜'];

    // console.log(foods.join());// 输出: "西瓜,南瓜,北瓜"

    // console.log(foods.join(''));// 输出: "西瓜南瓜北瓜"

    // console.log(foods.join('-'));// 输出: "西瓜-南瓜-北瓜"

    // let foods = ['西兰花', '花菜']
    // let fruits = ['西瓜', '香蕉']
    // console.log(foods.concat(fruits))
    // // 输出: ['西兰花', '花菜','西瓜','香蕉']
    // let meats = ['牛肉', '猪肉']
    // console.log(foods.concat(fruits, meats))
    // // 输出: ['西兰花', '花菜','西瓜','香蕉','牛肉','猪肉']

    // let foods = ['西兰花', '花菜']
    // foods.reverse()
    // console.log(foods)
    // // 输出: ['花菜','西兰花']

    // let foods =['西瓜','西兰花']
    // console.log(foods.indexOf('西兰花'))
    // // 输出: 1
    // console.log(foods.indexOf('花菜'))
    // // 输出: -1

    // let foods =['西兰花','西瓜','西兰花']
    // console.log(foods.lastIndexOf('西兰花'))
    // // 输出: 2
    // console.log(foods.lastIndexOf('花菜'))
    // // 输出: -1

    // prep代表上一次的返回值，next代表下一个数组元素，第一次计算为arr[0]与arr[1]；
    // var arr = [1, 2, 3, 4, 5]
    // var res = arr.reduce(function (prep, next) {
    //   return prep + next
    // })
    // console.log(res)//15

    let foods = [
      { name: '西兰花', color: '绿' },
      { name: '辣椒', color: '红' },
      { name: '花菜', color: '白' }
    ]

    // findIndex() 方法 传入的参数是一个函数
    // 返回传入一个测试条件（函数）符合条件的数组第一个元素位置
    // 当有元素符合测试条件的时候，就反回这个元素的位置，之后的函数就不在执行调用了
    // 他会为方法的每一个元素都执行一次函数调用，如果始终没有符合的，就反回-1
    // 如果是空数组，函数时不会执行的
    console.log(
      foods.findIndex(v => {
        return v.color == '白'
      })
    )
    // 输出: 2
    console.log(
      foods.findIndex(v => {
        return v.color == '黄'
      })
    )
  // 输出: -1
  </script>
</body>

</html>